Jetfire Code: Contact Lists

Modified on 2010/01/19 21:41 by John — Categorized as: Jetfire Code

Table of Contents [Hide/Show]


Jetfire Code: Contact Lists

The Jetfire Code Class for Contact Lists is shown below in the box. This file contains a set of classes that are used in Contact Workflows.

// C O N T A C T   L I S T S     W O R K F L O W
//===================================================================================
// ContactLists.txt
//===================================================================================
// Copyright (C) 2007 TrackerRealm Corporation
// This file is part of Jetfire.  http://Jetfire.ca
// 
// Jetfire is open software: you can redistribute it and/or modify it under the terms
// of the GNU General Public License as published by the Free Software Foundation,
// version 3 of the License.
// 
// Jetfire is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
// See the GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License along with Jetfire.  
// If not, see http://www.gnu.org/licenses.
// REMOVAL OF THIS NOTICE IS VIOLATION OF THE COPYRIGHT.
//===================================================================================
//
// This file contains classes for:
// - Tag: a generic 'tag' used for categorization of workflows
// - Note: a simple note to add text
// - Address: a general address for a contact
// - EmailAddres: an email address for a contact
// - Phone: a phone number for a contact

namespace JetfireContacts
{
	// DisplayName = "Tag";
	// ToolTip = "Represents a general tag used for categorization.";
	public workflow Tag
	{
		// C O N S T R U C T O R - Instantiate the Tag
		public Tag()
		{
			Subject = " New Tag";
		}
		public Tag(string subject)
		{
			Subject = subject;
			ToolTip = subject;
		}
		public Tag(string subject, string tooltip)
		{
			Subject = subject;
			ToolTip = tooltip;
		}
	}

	// DisplayName = "Note";
	// ToolTip = "Notes may be managed as a workflow.  This makes it simple to add states for the note, who can/cannot edit the note, add more properties and more."
	public workflow Note
	{
		// C O N S T R U C T O R
		public Note()
		{
			Subject = " New Note";
			FileType = FileType.None;
			Tags = new List();
			enterstate Start();
		}
		public Note(string subject)
		{
			Subject = subject;
			FileType = FileType.None;
			Tags = new List();
			enterstate Start();
		}
		public Note(string subject, string body)
		{
			Subject = subject;
			Body = body;
			FileType = FileType.None;
			Tags = new List();
			enterstate Start();
		}
		// S T A T E S
		// State Transition        Command       Comment
		// Instantiate -> Start    New           The configuration object enters the New state when instantiated
		// Start -> Valid          Approve       The user approves the data
		// Valid -> Deleted        Delete        This is an end state
		//
		// S T A T E   M E T H O D S
		public Start()
		{
		}
		public Valid()
		{
		}
		public Deleted()
		{
		}
		public Superceded()
		{
		}
		// C O M M A N D S
		// The Approve command is used to promote the note
		public void Approve() : states(Start, Deleted)
		{
			enterstate Valid();
		}
		// The Delete command is used to delete the note
		public void Delete() : states(Valid)
		{
			enterstate Deleted();
		}
		// The Supercede command is used to supercede the note
		public void Supercede() : states(Valid)
		{
			enterstate Superceded();
		}
		// P R O P E R T I E S
		public string Body
		{
			get;
			set;
		}
		public FileType FileType
		{
			get;
			set;
		}
		public List Tags
		{
			get;
			private set;
		}
	}

	// DisplayName = "Address";
	// ToolTip = "This is an address that can be used with contacts.";
	public workflow Address
	{
		// C O N S T R U C T O R - Instantiate the Address
		public Address()
		{
			Subject = " Address";
			Country = Country.None;
			AddressType = LocationType.None;
		}
		public Address(string subject)
		{
			Subject = subject;
			ToolTip = subject;
			Country = Country.None;
			AddressType = LocationType.None;
		}
		public Address(string subject, string tooltip)
		{
			Subject = subject;
			ToolTip = tooltip;
			Country = Country.None;
			AddressType = LocationType.None;
		}

		// PROPERTIES
		string address1;
		string address2;
		string city;
		string pc;
		Province province = Province.None;

		public string Address1
		{
			get { return address1;		}
			set
			{ 
				address1 = value; 
				UpdateSubject();
			}
		}
		public string Address2
		{
			get { return address2;		}
			set
			{ 
				address2 = value; 
				UpdateSubject();
			}
		}
		public string City
		{
			get { return city;			}
			set
			{ 
				city = value; 
				UpdateSubject();
			}
		}
		public string PostalCode
		{
			get { return pc;			}
			set
			{ 
				pc = value; 
				UpdateSubject();
			}
		}
		public Province Province
		{
			get { return province;		}
			set
			{ 
				province = value; 
				UpdateSubject();
			}
		}
		public Country Country
		{
			get;
			set;
		}
		public LocationType AddressType
		{
			get;
			set;
		}
		private void UpdateSubject()
		{
			string s;
			if (address1.Length > 0)
			{
				s = address1;
			}
			if (address2.Length > 0)
			{
				s += " " + address2;
			}
			if (city.Length > 0)
			{
				s += " " + city;
			}
			s += " " + province.ToString();
			if (pc.Length > 0)
			{
				s += " " + pc;
			}
			Subject = s;
		}
	}

	// DisplayName = "EmailAddress";
	// ToolTip = "This is an email address that can be used with contacts.";
	public workflow EmailAddress
	{
		// C O N S T R U C T O R - Instantiate the EmailAddress
		public EmailAddress()
		{
			Subject = " Email Address";
			EmailAddressType = LocationType.None;
		}
		public EmailAddress(string subject)
		{
			Subject = subject;
			ToolTip = subject;
			EmailAddressType = LocationType.None;
		}
		public EmailAddress(string subject, string tooltip)
		{
			Subject = subject;
			ToolTip = tooltip;
			EmailAddressType = LocationType.None;
		}

		// PROPERTIES
		string emailName;
		string address;

		public string Address
		{
			get { return address;		}
			set 
			{ 
				address = value;	
				UpdateSubject();
			}
		}
		public string EmailName
		{
			get { return emailName;	}
			set 
			{ 
				emailName = value;	
				UpdateSubject();
			}
		}
		public LocationType EmailAddressType
		{
			get;
			set;
		}

		// Private Methods
		private void UpdateSubject()
		{
			string s;
			if (address.Length > 0)
			{
				s = "Email: " + address;
			}
			if (emailName.Length > 0)
			{
				s += " (";
				s += emailName;
				s += ")";
			}
			Subject = s;
		}
	}

	// DisplayName = "Phone";
	// ToolTip = "This is an phone number that can be used with contacts.";
	public workflow Phone
	{
		// C O N S T R U C T O R - Instantiate the Phone Number
		public Phone()
		{
			Subject = " Phone Number";
			PhoneNumberType = LocationType.None;
		}
		public Phone(string subject)
		{
			Subject = subject;
			ToolTip = subject;
			PhoneNumberType = LocationType.None;
		}
		public Phone(string subject, string tooltip)
		{
			Subject = subject;
			ToolTip = tooltip;
			PhoneNumberType = LocationType.None;
		}

		// PROPERTIES
		string number;
		string extension;

		public string PhoneNumber
		{
			get { return number;		}
			set 
			{ 
				number = value;
				UpdateSubject();
			}
		}
		public string Extension
		{
			get { return extension;	}
			set 
			{
				extension = value;
				UpdateSubject();
			}
		}     
		public LocationType PhoneNumberType
		{
			get;
			set;
		}

		// Private Methods
		private void UpdateSubject()
		{
			string s;
			if (number.Length > 0)
			{
				s = "Phone: " + number;
			}
			if (extension.Length > 0)
			{
				s += " x:";
				s += extension;
			}
			Subject = s;
		}
	}
}

See Also

Jetfire Code Library
Jetfire Contacts Code Library